from time import sleep

# from time import sleep

from appium import webdriver  # 导入Appium的WebDriver模块，用于创建驱动实例
from appium.webdriver.common.appiumby import AppiumBy


# from selenium.webdriver.ie.webdriver import WebDriver


class CommonDriver:  # 定义通用驱动类（注：类名建议改为CommonDriver，可能为拼写误差）
    def get_driver(self):
        # 配置设备及应用信息（Desired Capabilities），这是Appium连接设备的关键参数
        desc = {
            'platformName': 'Android',  # 指定被测设备的平台类型（Android/iOS）
            'platformVersion': '7',  # 指定设备的Android系统版本（需与模拟器/真机实际版本一致）
            'appPackage': 'com.dangdang.buy2',  # 指定需要启动的应用包名（通过aapt工具或Appium Inspector获取）
            'appActivity': 'com.dangdang.buy2.StartupActivity',  # 指定应用启动时的Activity（主界面入口）
            'noReset': False,  # 运行后是否重置应用状态（True：不重置，保留登录等状态；False：重置）
            'unicodeKeyboard': True,  # 是否使用Unicode键盘（用于输入非ASCII字符，如中文）
            'udid': '127.0.0.1:21513',  # 设备唯一标识符（UDID）：
            # - 真机：通过adb devices获取设备序列号
            # - 模拟器：格式为"127.0.0.1:端口号"（如夜神模拟器默认端口62001，需根据实际模拟器配置调整）
        }

        # Appium服务器的连接地址（需提前启动Appium服务器）
        # 格式：http://<服务器IP>:<端口号>/wd/hub
        # 本地默认端口为4723，若修改了Appium服务器端口，此处需同步修改
        command_executor_url = 'http://127.0.0.1:4723/wd/hub'

        # 创建Appium驱动实例，连接到指定的Appium服务器并传递设备配置
        driver = webdriver.Remote(
            command_executor=command_executor_url,  # Appium服务器地址
            desired_capabilities=desc  # 设备及应用配置信息
        )

        driver.implicitly_wait(10)  # 设置隐式等待时间（10秒），等待页面元素加载完成后再操作
        print("连接成功")  # 打印连接成功提示
        return driver  # 返回驱动实例，供后续测试用例使用


# if __name__ == '__main__':
#     # 主程序入口：直接运行时创建驱动实例（通常用于单独调试，实际测试中会被测试框架调用）
#     driver = CommonDriver().get_driver()
#     # 后续可添加测试操作（如driver.find_element等），此处仅演示驱动连接
#     driver.implicitly_wait(20)
#     driver.find_element(AppiumBy.ID,'com.dangdang.buy2:id/tv_sure').click()
#     driver.find_elements(AppiumBy.CLASS_NAME,'android.widget.TextView')[3].click()
#     driver.find_element(AppiumBy.XPATH,'//android.widget.TextView[@text="同意"]').click()
#     driver.find_element(AppiumBy.XPATH,'//android.widget.TextView[@text="同意"]').click()
#     driver.find_elements(AppiumBy.XPATH,'android.widget.TextView')[3].click()
#     driver.find_element(AppiumBy.XPATH,'//android.widget.TextView[@text="不同意"]').click()
#     driver.find_element(AppiumBy.XPATH,'//android.widget.TextView[contains(@text,"同意")]').click()
#     driver.find_element(AppiumBy.XPATH,'//android.widget.TextView[@resource-id="com.dangdang.buy2:id/tv_sure" and @text="同意"]').click()
#     driver.find_element(AppiumBy.XPATH,'//android.widget.FrameLayout/android.widget.LinearLayout[resource-id="com.dangdang.buy2:id/tv_dis"]').click()


# if __name__ == '__main__':
#     driver = CommonDriver().get_driver()
#     # driver.find_element(AppiumBy.XPATH,
#     #                     '//android.widget.TextView[@resource-id="com.dangdang.buy2:id/tv_sure"]').click()
#     try:
#         element=WebDriverWait(driver,20).until(
#             EC.visibility_of_element_located(
#             (AppiumBy.XPATH,'//android.widget.TextView[@resource-id="com.dangdang.buy2:id/tv_sur"]')))
#     finally:
#         concurrent=datetime.now()
#         print(concurrent)
# driver.find_element(AppiumBy.XPATH,
#                     '//android.widget.TextView[@resource-id="com.dangdang.buy2:id/dialog_cancel_tv"]').click()
# # driver.find_element(AppiumBy.XPATH,
# #                     '//android.widget.ImageView[@resource-id="com.dangdang.buy2:id/title_background_iv"]').click()
# # driver.find_element(AppiumBy.CLASS_NAME,
# #                     'android.widget.EditText').send_keys('android.widget.EditText')
# # driver.find_element(AppiumBy.CLASS_NAME,
# #                 'android.widget.EditText').clear()
# # sleep(3)
# # driver.quit()
# # try:
# #     screen_size = driver.get_window_size()
# #     width=screen_size["width"]
# #     height=screen_size["height"]
# #     start_x=width/2
# #     start_y=height*0.8
# #     end_x=width/2
# #     end_y=height*0.2
# #     driver.swipe(start_x,start_y,end_x,end_y)
# #     sleep(2)
# # finally:
# #     driver.quit()
# driver.tap([(52,424)],500)
# dangdang_icon=driver.find_element(AppiumBy.XPATH,'//android.widget.TextView[@text="当当"]')
# action =TouchAction(driver)
# action.long_press(dangdang_icon).move_to(x=482,y=786).release().perform()


# 4/29作业
if __name__ == '__main__':
    # 创建CommonDriver类的一个实例，并调用其get_driver方法，将返回的Appium驱动实例赋值给变量driver
    driver = CommonDriver().get_driver()

    driver.find_element(AppiumBy.XPATH,
                        '//android.widget.TextView[@resource-id="com.dangdang.buy2:id/tv_sure"]').click()
    driver.find_element(AppiumBy.XPATH,
                        '//android.widget.TextView[@resource-id="com.dangdang.buy2:id/tv_sure"]').click()

    sleep(5)
    driver.find_element(AppiumBy.ID, 'com.dangdang.buy2:id/dialog_cancel_tv').click()
    # driver.find_element(AppiumBy.XPATH,'//android.widget.TextView[@resource-id="com.dangdang.buy2:id/dialog_cancel_tv"]').click()
    driver.find_element(AppiumBy.XPATH,
                        '//android.widget.ImageView[@resource-id="com.dangdang.buy2:id/title_background_iv"]').click()
    driver.find_element(AppiumBy.XPATH,
                        '//android.widget.EditText[@resource-id="com.dangdang.buy2:id/et_search"]').send_keys(
        '浪潮之巅')
    driver.find_element(AppiumBy.XPATH,
                        '//android.widget.TextView[@resource-id="com.dangdang.buy2:id/tv_search"]').click()
    driver.find_element(AppiumBy.XPATH, '//android.widget.TextView[@text="浪潮之巅 第四版"]').click()
    driver.find_element(AppiumBy.ID, 'com.dangdang.buy2:id/ll_magic_btn_left').click()
    driver.find_element(AppiumBy.XPATH, '//android.widget.TextView[@text="确定"]').click()